M1 Mac 環境で Rancher Desktop を試してみた
こんにちは!DA(データアナリティクス)事業本部 サービスソリューション部の大高です。
私は普段プロダクトの開発時に、Docker環境をGUIで簡単に構築できるアプリケーション「Docker Desktop」を利用して、開発用の環境を作成・利用しています。
今回は「Docker Desktop」の代わりに「Rancher Desktop」を試してみたので、対応した方法などをエントリとして残したいと思います。
前提
私の現在の環境は以下のような環境となっています。
- macOS Monterey
- M1 Mac
- 開発用のコンテナ環境
- Amazon Linux 2(amazonlinux:2)
- イメージに platform オプションの指定は無し(linux/amd64 などの指定なし)
- コンテナ内でNext.jsを利用したアプリケーションを開発している
Rancher Desktop とは?
Rancher Desktopも、Docker Desktopと同様に、Windows、macOS、Linux上でDockerを利用することができるOpen-Sourceのアプリケーションです。
2022年11月現在では、以下の3プラットフォーム用にダウンロードリンクが用意されています。
- Mac (Apple Silicon)
- Mac (Intel)
- Windows
- Linux
また、以下のエントリにてWindows版のインストール方法も解説されており、今回Mac版のインストールをするにあたって、こちらのエントリを参考にさせていただきました。
Docker Desktop のアンインストール
では、実際にすすめていきます。まずは、現在利用しているDocker Desktopをアンインストールしていきます。
Docker Desktopを開き、右上の虫のようなアイコンから「Troubleshoot」画面を開きます。
この中の「Uninstall」をクリックし、アンインストールを進めます。
このアンインストールにより、 既存のイメージやコンテナがすべて削除されます。また、Docker Desktopによって作成された設定ファイルなどもすべて削除されます。
クリック時のダイアログにも注意が表示されますが、 既存のイメージやコンテナがすべて削除されます ので、ご注意ください。(大事なことなので2回言いました)
クリック後は、画面がそのままになりますが、しばらく待つと一瞬削除に成功した旨のダイアログが表示され、そのままDocker Desktopも終了します。
これでアンインストールは完了です。
Rancher Desktop のインストール
こちらの公式ページから、インストールファイルをダウンロードします。
私はM1 Macを利用しているので、「Download Mac (Apple Silicon)」からダウンロードしました。
ダウンロードが完了したら、dmg
ファイルをクリックしてインストーラを起動します。
起動したら、画面に出ている「Rancher Desktop.app」のアイコンをマウスでドラッグして、右側の「Applications」にドロップします。
これでMacのアプリケーションに「Rancher Desktop」が表示されるようになったので、起動します。
起動すると、「Welcome to Rancher Desktop」という画面が表示されます。私は「Docker API」を利用したいので「dockerd(moby)」を選択して「Accept」しました。
なお、Kubernetesの利用予定は無いのですが、このあたりの設定は一旦初期状態のままとしておきました。
「Accept」すると、今度は管理者権限を必要とする旨のダイアログが表示されます。私は常に許可したいので、そのまま「OK」をクリックして表示されたダイアログに管理者パスワードを入力して許可しました。
許可すると、Kubernetesなどのインストール処理が進み、しばらくするとこのような画面になります。これでインストールは完了したようです。
これまでと同じ利用の仕方ができるか、試してみる
セットアップは終わったので、これまでと同じ利用の仕方ができるか、試してみたいと思います。
VS Codeでコンテナを利用する
私は普段の開発では、下記のエントリのようにVS Codeを利用してコンテナ環境を利用していました。
まずはVS Codeを使って、いままでと同じように利用できるか、試してみます。
VS Codeのコンテナ用フォルダを開き、「Reopen in Container」をクリックして、コンテナのビルド→起動を待ちます…!
エラーになりました。コンテナのビルドに失敗しているようです。
ログを見るとDockerfile
の以下のコマンドがエラーを起こしているようです。
RUN . ~/.bash_profile && npm install -g yarn && echo -e 'export YARN_DIR="$HOME/.yarn"\nexport PATH="$YARN_DIR/bin:$PATH"' >> ~/.bash_profile
が、こちらはどうもDockerfile
で利用しているイメージのamazonlinux:2
とNode.jsのLTS(v18)
で問題が起きていたようです。
本筋とは関係ないエラーでしたので、改めてNodeのバージョンを16.18.0
に変更して再挑戦したところ、うまくコンテナが立ち上がりました!
Next.jsのアプリケーションを動かしてみる
次に、私が普段利用しているNext.jsのアプリケーションも立ち上げてみます。
が、起動はできるのですが何故かブラウザでアクセスするとSIGKILL
で落ちてしまうようです。
$ next dev ready - started server on 0.0.0.0:3000, url: http://localhost:3000 (略) error Command failed with signal "SIGKILL".
同様にこのNext.jsのアプリは、ビルドをしても落ちる状態でした。おそらく、next dev
の方でもビルドの過程で何かが発生して落ちてしまっているのでしょう。
一方で、yarn create next-app --typescript
で作成したシンプルなアプリは普通に起動し、ブラウザでアクセスしても問題ありませんでした。
なんとなく、メモリ負荷のような感じもしたので、Rancher DesktopのPreferencesからVirtual Machineのスペックを上げて見ましたが、状況は変わらずでした。これについては、また調査をして何かわかったら追記したいと思います。
2022/11/08 追記: 解決しました!
まとめ
以上、M1 Mac 環境で Rancher Desktop を試してみました。
導入自体は容易で、個人的な利用用途で言えば、特に使い勝手にも問題ないと感じました。ただ、不明なSIGKILL
エラーも起きたので、これについては追加で調べて対応を考えたいと思います。
どなたかのお役に立てば幸いです。それでは!